package model;

import java.awt.Point;
import java.util.Observable;


/**
 * Avatar observé par passant
 * @author lmatignon
 *
 */
public class Avatar extends Observable {
	protected PersoAbstract perso;//délégation pour éviter double héritage
	
	
/**
 * Constructeur
 * @param pos
 * @param champVision
 */
	public Avatar(Point pos, int champVision){
		this.perso = new PersoAbstract(pos, champVision);
	}

	/**
	 * Notifier observers
	 */
	public void notification(){
		setChanged();
		notifyObservers();
	}
	/**
	 * Délègue à perso : Vérifie si un autre personnage est dans mon champ de vision
	 * @param p autre perso
	 * @return vrai si autre perso p est dans mon champ de vision
	 */
	public boolean isInMyField(Personnage p) {
		return this.perso.isInMyField(p);
	}

	public Point getPos() {
		return this.perso.getPos();
	}

	public void setPos(Point pos) {
		this.perso.setPos(pos);
		notification();
	}

	public int getChampVision() {
		return this.perso.getChampVision();
	}

	public void setChampVision(int champVision) {
		this.perso.setChampVision(champVision);
		notification();
	}
	public PersoAbstract getPerso() {
		return perso;
	}

	public void setPerso(PersoAbstract perso) {
		this.perso = perso;
	}
	
	public void goUp(){
		this.setPos(new Point(this.getPos().x,this.getPos().y-1));
	}
	public void goDown(){
		this.setPos(new Point(this.getPos().x,this.getPos().y+1));
	}
	public void goLeft(){
		this.setPos(new Point(this.getPos().x-1,this.getPos().y));
	}
	public void goRight(){
		this.setPos(new Point(this.getPos().x+1,this.getPos().y));
	}
	@Override
	public String toString() {
		return "Avatar [pos=" + this.perso.getPos() + ", champVision=" + this.perso.getChampVision() + "]";
	}
	
}
